import { Observable } from 'rxjs'

import { IMerchantQueryParams, IMerchantPagination, Merchant, ICreateMerchant } from '@shared/interfaces/merchant'

export abstract class MerchantService {
  abstract getList(params: IMerchantQueryParams): Observable<IMerchantPagination>

  abstract getOne(code: string): Observable<Merchant>

  abstract create(merchant: ICreateMerchant): Observable<ICreateMerchant>

  abstract update(intMerCode: string, merchant: Merchant): Observable<Merchant>

  abstract updateAuthPassword(intMerCode: string, authPassword: string): Observable<boolean>

  abstract delete(code: string): Observable<boolean>

  abstract freeze(intMerCode: string): Observable<boolean>

  abstract unfreeze(intMerCode: string): Observable<boolean>
}
